This disclosure relates generally to the field of computer programming. More particularly, but not by way of limitation, it relates to a programming language and compilation system for the programming language for programming kernels for execution on a graphical processor unit.
Graphics processor units (GPUs) have become more and more important for processing data-parallel graphics tasks. Developers have also recognized that non-graphics data-parallel tasks can also be handled by GPUs, taking advantage of their massive parallel capabilities. Vendors and standards organizations have created application programming interfaces (APIs) that make graphics data-parallel tasks easier to program. Similarly, vendors and standards organizations have created different APIs that make compute or non-graphics data-parallel tasks easier to program. However, these high-level APIs have resulted in performance degradation, as well as making combining graphics and compute data-parallel tasks different less convenient, because of the need to use different APIs for each type of task or to write code in languages that are quite different from programming languages such as C++ that developers very commonly use for writing code on the CPU.